package service.produtos;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;

import model.Farmacia;
import model.Item;
import model.produtos.Cosmetico;
import util.DataUtil;
import enumerations.CosmeticoType;

public class CosmeticoService {
	
	protected EntityManager entityManager;
	
	public CosmeticoService(EntityManager entityManager) {
		this.entityManager = entityManager;
	}
	
	public Cosmetico criaCosmetico(CosmeticoType tipo,
			String nome, Long preco, int estoque, long dataFab) {
		Cosmetico cosm = new Cosmetico();
		cosm.setCosmeticoType(tipo);
		cosm.setNome(nome);
		cosm.setPrecoVenda(preco);
		cosm.setQuantidadeEstoque(estoque);
		cosm.setDataFabricacao(DataUtil.criaData(dataFab));
		
		insereCosmetico(cosm);
		return cosm;
	}
	
	public Cosmetico alteraItem(Long cosId, Item item) {
		Cosmetico cos = entityManager.getReference(Cosmetico.class, cosId);
		if (cos != null) {
			cos.setItem(item);
		}
		return cos;
	}
	
	public Cosmetico alteraFarmacia(Long cosmeticoId, Farmacia farmacia) {
		Cosmetico cos = entityManager.getReference(Cosmetico.class, cosmeticoId);
		if (cos != null) {
			cos.setFarmacia(farmacia);
		}
		return cos;
	}
	
	public Cosmetico findCosmetico(Long id) {
		Cosmetico Cosmetico = entityManager.getReference(Cosmetico.class, id);
		return Cosmetico;
	}
	
	public List<Cosmetico> listaCosmeticos() {
		TypedQuery<Cosmetico> query = entityManager.createQuery(
				"SELECT e FROM Cosmetico e", Cosmetico.class);
		return query.getResultList();
	}
	
	public void deletaCosmeticos() {
		TypedQuery<Cosmetico> query = entityManager.createQuery(
				"DELETE FROM Cosmetico", Cosmetico.class);
		query.executeUpdate();
	}
	
	public void insereCosmetico(Cosmetico emp) {
		entityManager.persist(emp);
	}
	
	public void removeCosmetico(Long id) {
		Cosmetico cosm = findCosmetico(id);
		if (cosm != null) {
			entityManager.remove(cosm);
		}
	}


}
